package control;

import fontes.*;
import java.util.List;
import javax.naming.NamingException;

public class controlProdutos {

    private Produto produto = new Produto();
    private String tipopesq;
    private String termopesq;

    public Produto getProduto() {
        if (this.produto == null) {
            this.produto = new Produto();
        }
        return this.produto;
    }

    public void setProduto(Produto produto) {
        this.produto = produto;
    }

    public String getTermopesq() {
        return termopesq;
    }

    public void setTermopesq(String termopesq) {
        this.termopesq = termopesq;
    }

    public String getTipopesq() {
        return tipopesq;
    }

    public void setTipopesq(String tipopesq) {
        this.tipopesq = tipopesq;
    }

    public String novo() throws Throwable {
        this.produto = null;
        return "";
    }

    public String salvar() throws NamingException {

        try {

            Produto novoPro = new Produto();

            novoPro.setDescricao(this.produto.getDescricao());
            novoPro.setPreco(this.produto.getPreco());
            novoPro.setQtdEstoque(this.produto.getQtdEstoque());

            //Utilizando os recursos do webservice
            ProdutoControleService pcs = new ProdutoControleService();
            ProdutoControle port = pcs.getProdutoControlePort();
            
            port.incluir(novoPro);

        } catch (Exception e) {
            System.out.println("Erro: " + e.getMessage());
        }

        return "";
    }

    public String pesquisar() throws NamingException {

        try {
            if (!termopesq.isEmpty()) {
                if (tipopesq.equals("DESC")) {
                    Consulta consulta = new Consulta();
                    consulta.setTipo(TipoConsulta.DESCRICAO);
                    consulta.setParametro(termopesq);
                    this.consultar(consulta);
                } else {
                    Consulta consulta = new Consulta();
                    consulta.setTipo(TipoConsulta.CODIGO);
                    consulta.setParametro(termopesq);
                    this.consultar(consulta);
                }

            } else {
                System.out.println("Deve ser passado um parâmetro para a pesquisa");
            }

        } catch (Exception e) {
            System.out.println("Erro: " + e.getMessage());
        }

        return "";
    }

    void consultar(Consulta consulta) throws NamingException {

        //Utilizando os recursos do webservice
        ProdutoControleService pcs = new ProdutoControleService();
        ProdutoControle port = pcs.getProdutoControlePort();

        List<Produto> listaProdutos = port.consultar(consulta);

        for (Produto produto : listaProdutos) {

            this.produto.setCodigo(produto.getCodigo());
            this.produto.setDescricao(produto.getDescricao());
            this.produto.setPreco(produto.getPreco());
            this.produto.setQtdEstoque(produto.getQtdEstoque());

        }
    }

    public String atualizar() throws NamingException {

        try {

            Produto novoPro = new Produto();

            novoPro.setCodigo(this.produto.getCodigo());
            novoPro.setDescricao(this.produto.getDescricao());
            novoPro.setPreco(this.produto.getPreco());
            novoPro.setQtdEstoque(this.produto.getQtdEstoque());

            //Utilizando os recursos do webservice
            ProdutoControleService pcs = new ProdutoControleService();
            ProdutoControle port = pcs.getProdutoControlePort();

            port.alterar(novoPro);

        } catch (Exception e) {
            System.out.println("Erro: " + e.getMessage());
        }

        return "";
    }




}
